package com.hxkj.mapper;

import com.hxkj.domain.po.Article;
import com.hxkj.domain.po.Tags;
import com.platform.common.domain.annotation.EnableDataSource;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
* 数据库操作接口
*
* @author: zzx
* @version: 1.0
* @datetime: 2018-06-05 17:57:34
*
*/
@Repository("articleMapper")
public interface ArticleMapper {

    /**
     * 根据主键查询Article对象
     *
     * @param articleId
     * @return Article对象
     */
    Article selectByPrimaryKey(Long articleId);

    /**
     * 根据查询条件查询符合条件的Article对象
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> select(Article article);

    /**
     * 查询文章列表（包含文章回收站列表、文章审核列表、文章管理列表）
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> getArticleList(Article article);

    /**
     * 查询3个月以内的文章是否重名，存在则重名！
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> getArticleHeadline(Article article);

    /**
     * 根据主键删除Article对象
     *
     * @param articleId
     * @return 影响条件数
     */
    int deleteByPrimaryKey(Long articleId);

    /**
     * 根据条件删除符合条件的Article对象
     *
     * @param article
     * @return 影响条件数
     */
    int delete(Article article);

    /**
     * 插入Article对象
     *
     * @param article
     * @return 影响条件数
     */
    int insert(Article article);

    /**
     * 更新Article对象
     *
     * @param article
     * @return 影响条件数
     */
    int update(Article article);

    /**
     * @return java.util.List<com.hxkj.domain.po.Article>
     * @author Mr.zheng
     * @Description getArticleByColumnId 根据文章分类ID获取文章列表
     * @Date 16:34 2018/6/7
     * @Param [columnId]
     **/
    List<Article> getArticleByColumnId(Article article);

    /**
     * 查询出最大热度值文章
     *
     * @return Article对象
     */
    Article getArticleByHeat();

    /**
     * 查询 新闻推荐 一级  二级 推荐
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> selectArticle1(Article article);

    /**
     * 查询 新闻推荐 三级 推荐
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> selectArticle3(Article article);


    /** 热门百科 三级 推荐   按页数来获取文章
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> getArticle4(Article article);

    /**
     * 查询 期权行情 首页  无分页
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> selectArticleMarket(Article article);

    /**
     * 查询 热门文章
     *
     * @param article
     * @return 符合条件的Article对象List
     */
    List<Article> selectHotArticle(Article article);

    /**
    * @author Mr.zheng
    * @Description getOptionArticleList 获取解析文章列表
    * @Date 11:02 2018/6/30
    * @Param [article]
    * @return java.util.List<com.hxkj.domain.po.Article>
    **/
    @EnableDataSource("slave")
    List<Article> getOptionArticleList(Article article);


    /**
    * @author Mr.zheng
    * @Description getArticleListByLocationLevel 根据推荐级别获取文章
    * @Date 16:22 2018/7/10
    * @Param [article]
    * @return java.util.List<com.hxkj.domain.po.Article>
    **/
    @EnableDataSource("slave")
    List<Article> getArticleListByLocationLevel(Article article);

    Article getPreArticle(Article article);

    Article getNextArticle(Article article);

    /**
    * @author Mr.zheng
    * @Description getColumnArticleList 根据分类ID获取文章列表
    * @Date 11:18 2018/7/12
    * @Param [article]
    * @return java.util.List<com.hxkj.domain.po.Article>
    **/
    @EnableDataSource("slave")
    List<Article> getColumnArticleList(Article article);

    /**
    * @author Mr.zheng
    * @Description updateArticleRecover 修改文章的推荐级别
    * @Date 12:38 2018/7/17
    * @Param [article]
    * @return int
    **/
    @EnableDataSource("master")
    int updateArticleRecover(Article article);

    /**
     * @author Mr.zheng
     * @Description updateArticleRecover 设置文章的置顶
     * @Date 12:38 2018/7/17
     * @Param [article]
     * @return int
     **/
    @EnableDataSource("master")
    int updateArticleStick(Article article);

    /**
    * @author Mr.zheng
    * @Description getArticleListByParam 根据参数获取文章列表
    * @Date 10:38 2018/7/20
    * @Param [article]
    * @return java.util.List<com.hxkj.domain.po.Article>
    **/
    @EnableDataSource("slave")
    List<Article> getArticleListByParam(Article article);

    
    /**
    * @author Mr.zheng
    * @Description getHotArticleAsTagsList 根据热门文章获取tags标签
    * @Date 14:41 2018/7/20
    * @Param [article]
    * @return java.util.List<com.hxkj.domain.po.Tags>
    **/
    @EnableDataSource("slave")
    List<Tags> getHotArticleAsTagsList(Article article);

    
    /**
    * @author Mr.zheng
    * @Description modifuArticleAsPath 修改静态资源路径
    * @Date 15:27 2018/7/24
    * @Param [article]
    * @return int
    **/
    @EnableDataSource("master")
    int modifyArticleAsPath(Article article);

    //获取曝光和咨询文章列表  chenfangzhou
    List<Article> getrightsArticlesByParam(Article article);

    //获取咨询或者曝光的条数  chenfangzhou
    Integer getRightsCount(Article article);

    /**
    * @author Mr.zheng
    * @Description modifyHeat 根据站点ID和文章ID修改文章的热度值
    * @Date 9:45 2018/8/9
    * @Param [article]
    * @return int
    **/
    @EnableDataSource("master")
    int modifyHeat(Article article);

    /***
     * 查询文章
     * **/
    List<Article> searchArticle(Article article);

    /**
     * @author Mr.zheng
     * @Description getArticleListByTime 根据文章id字符串获取30天以内的需要生成静态资源的文章列表
     * @Date 16:31 2018/8/14
     * @Param [article]
     * @return com.platform.common.domain.result.ResultPageStruct<com.hxkj.domain.po.Article>
     **/
    @EnableDataSource("slave")
    List<Article> getArticleListByTime(Article article);


    /**
     * @author Mr.zheng
     * @Description getArticleByTempletId 根据模板ID和站点ID去获取文章模拟数据
     * @Date 17:38 2018/8/16
     * @Param [article]
     * @return com.platform.common.domain.result.ResultDataStruct<com.hxkj.domain.po.Article>
     **/
    List<Article> getArticleByTempletId(Article article);

    //获取最近一个月内的文章
    @EnableDataSource("slave")
    List<Article> getArticleInMonth(Article article);

    //自定义标签获取相关推荐文章
    @EnableDataSource("slave")
    List<Article> getCorrelationArticle(Article article);
    //查询随机文章
    @EnableDataSource("slave")
    List<Article> getRandomArticle(Article article);

    @EnableDataSource("slave")
    List<Article> getDailyArticleList(Article article);

    @EnableDataSource("slave")
    List<Article> getWeeklyArticleList(Article article);


    /**
     * 根据用户中心的需求查询所有站点热度最高的十篇文章
     * @return
     */
    @EnableDataSource("slave")
    List<Article> selectArticleForUserCenter();

    @EnableDataSource("slave")
    List<Article> getAllArticleList(Article article);

    @EnableDataSource("slave")
    List<Article> getRecommendationArticle(Article article);

    @EnableDataSource("slave")
    List<Article> getArticleByIds(Article article);

    /**
    * @Description getArticleListByTags 根据tags查询文章列表
    **/
    @EnableDataSource("slave")
    List<Article> getArticleListByTags(Article article);
}
